home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 October: Mac OS SDK / Dev.CD Oct 97 SDK1.toast / Development Kits (Disc 1) / Installer SDK Cornucopia 1.0.2 / DeveloperInterfaces / PIncludes / InstallerScript.p next >
Encoding:
Text File  |  1996-06-21  |  11.6 KB  |  447 lines  |  [TEXT/MPS ]

  1. {
  2.      File:        InstallerScript.p
  3.  
  4.      Contains:    xxx put contents here xxx
  5.  
  6.      Version:    Technology:    
  7.                  Package:    4.1a2
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs@applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. }
  19.  
  20. {$IFC UNDEFINED UsingIncludes}
  21. {$SETC UsingIncludes := 0}
  22. {$ENDC}
  23.  
  24. {$IFC NOT UsingIncludes}
  25.  UNIT InstallerScript;
  26.  INTERFACE
  27. {$ENDC}
  28.  
  29. {$IFC UNDEFINED __INSTALLERSCRIPT__}
  30. {$SETC __INSTALLERSCRIPT__ := 1}
  31.  
  32. {$I+}
  33. {$SETC InstallerScriptIncludes := UsingIncludes}
  34. {$SETC UsingIncludes := 1}
  35.  
  36.  
  37. {$PUSH}
  38. {$ALIGN MAC68K}
  39. {$LibExport+}
  40.  
  41. {$IFC UNDEFINED __FILES__}
  42. {$I Files.p}
  43. {$ENDC}
  44. {    Types.p                                                        }
  45. {        ConditionalMacros.p                                        }
  46. {    MixedMode.p                                                    }
  47. {    OSUtils.p                                                    }
  48. {        Memory.p                                                }
  49. {        Patches.p                                                }
  50. {            Kernel.p                                            }
  51. {                Errors.p                                        }
  52. {                MachineExceptions.p                                }
  53. {                Timing.p                                        }
  54. {            OrderedItems.p                                        }
  55. {    Finder.p                                                    }
  56.  
  57. {$IFC UNDEFINED __MEMORY__}
  58. {$I Memory.p}
  59. {$ENDC}
  60.  
  61. {$IFC UNDEFINED __MIXEDMODE__}
  62. {$I MixedMode.p}
  63. {$ENDC}
  64.  
  65. {$IFC UNDEFINED __TYPES__}
  66. {$I Types.p}
  67. {$ENDC}
  68. {$SETC kMaxNumOfFunctionParams := 12}
  69.  
  70. TYPE
  71.     CallBackPBRec = RECORD
  72.         fSelector:                LONGINT;
  73.         fResult:                LONGINT;
  74.         fParam:                    ARRAY [0..11] OF LONGINT;
  75.     END;
  76.  
  77.     CallBackPBPtr = ^CallBackPBRec;
  78.  
  79.     InstallerCallBackProcPtr = ProcPtr;  { FUNCTION InstallerCallBack(: CallBackPBPtr): LONGINT; }
  80.     InstallerCallBackUPP = UniversalProcPtr;
  81.  
  82. CONST
  83.     uppInstallerCallBackProcInfo = $000000F1; { FUNCTION (4 byte param): 4 byte result; }
  84.  
  85. FUNCTION NewInstallerCallBackProc(userRoutine: InstallerCallBackProcPtr): InstallerCallBackUPP;
  86.     {$IFC NOT GENERATINGCFM }
  87.     INLINE $2E9F;
  88.     {$ENDC}
  89.  
  90. FUNCTION CallInstallerCallBackProc(: CallBackPBPtr; userRoutine: InstallerCallBackUPP): LONGINT;
  91.     {$IFC NOT GENERATINGCFM}
  92.     INLINE $205F, $4E90;
  93.     {$ENDC}
  94. {///////////////////////////////////////////////////////////////////////////////////////////////////}
  95. {}
  96. {                                        Rule Function}
  97. {}
  98. {}
  99. {    Code Resource Calling Interface:}
  100. {}
  101. {        long YourRuleFunction( RuleFunctionPBPtr );}
  102. {}
  103. {///////////////////////////////////////////////////////////////////////////////////////////////////}
  104. {$SETC kTRUERuleFunctionResult := 1}
  105. {$SETC kFALSERuleFunctionResult := 0}
  106.  
  107. TYPE
  108.     RuleFunctionPBRec = RECORD
  109.         fCallBackProcPtr:        InstallerCallBackUPP;
  110.         fTargetVRefNum:            INTEGER;
  111.         fTargetFolderDirID:        LONGINT;
  112.         fSystemVRefNum:            INTEGER;
  113.         fSystemBlessedDirID:    LONGINT;
  114.         fRefCon:                LONGINT;
  115.     END;
  116.  
  117.     RuleFunctionPBPtr = ^RuleFunctionPBRec;
  118.  
  119. {///////////////////////////////////////////////////////////////////////////////////////////////////}
  120. {}
  121. {                                        Action Atom Function}
  122. {}
  123. {}
  124. {    Code Resource Calling Interface:}
  125. {}
  126. {        long YourActionAtomFunction( ActionAtom2PBPtr );}
  127. {}
  128. {///////////////////////////////////////////////////////////////////////////////////////////////////}
  129.  
  130. CONST
  131.     before                        = 0;
  132.     after                        = 1;
  133.     cleanUpCancel                = 2;
  134.  
  135.     
  136. TYPE
  137.     InstallationStage = SInt8;
  138.  
  139.  
  140. CONST
  141.     kActionAtomResultFatalError    = -1;
  142.     kActionAtomResultContinue    = 0;
  143.     kActionAtomResultCancel        = 1;
  144.  
  145.     
  146. TYPE
  147.     ActionAtomResult = LONGINT;
  148.  
  149.     ActionAtom2PBRec = RECORD
  150.         fMessageID:                InstallationStage;
  151.         padByte:                SInt8;
  152.         fStaticDataHdl:            Handle;
  153.         fCallBackProcPtr:        InstallerCallBackUPP;
  154.         fTargetVRefNum:            INTEGER;
  155.         fTargetFolderDirID:        LONGINT;
  156.         fSystemVRefNum:            INTEGER;
  157.         fSystemBlessedDirID:    LONGINT;
  158.         fRefCon:                LONGINT;
  159.         fDoingInstall:            BOOLEAN;
  160.         fDidLiveUpdate:            BOOLEAN;
  161.         fInstallerTempDirID:    LONGINT;
  162.     END;
  163.  
  164.     ActionAtom2PBPtr = ^ActionAtom2PBRec;
  165.  
  166. {///////////////////////////////////////////////////////////////////////////////////////////////////}
  167. {}
  168. {                                        Version Compare Function}
  169. {}
  170. {}
  171. {    Code Resource Calling Interface:}
  172. {}
  173. {        long YourComputeVersionFunctionSetupFunction( ComputeVersionPBPtr );}
  174. {}
  175. {    Return the version in BCD format.  For example:  ver 2.0.1 final release is 0x02018000}
  176. {}
  177. {///////////////////////////////////////////////////////////////////////////////////////////////////}
  178.     ComputeVersionPB = RECORD
  179.         fCallBackProcPtr:        InstallerCallBackUPP;
  180.     END;
  181.  
  182.     ComputeVersionPBPtr = ^ComputeVersionPB;
  183.  
  184. {///////////////////////////////////////////////////////////////////////////////////////////////////}
  185. {}
  186. {                                        Target Search Function}
  187. {}
  188. {}
  189. {    Code Resource Calling Interface:}
  190. {}
  191. {        SearchResult YourTargetSearchFunction( SearchProcedurePBPtr );}
  192. {}
  193. {///////////////////////////////////////////////////////////////////////////////////////////////////}
  194.  
  195. CONST
  196.     kFatalSearchError            = -1;
  197.     kSearchSuccessful            = 0;
  198.     kCancelSearchAndInstallation = 1;
  199.  
  200.     
  201. TYPE
  202.     SearchResult = SInt8;
  203.  
  204.     FoundFileRec = RECORD
  205.         vRefNum:                INTEGER;
  206.         parID:                    LONGINT;
  207.         name:                    Str63;
  208.         fReferenceID:            INTEGER;
  209.     END;
  210.  
  211.     FoundFileArrayPtr = ^FoundFileRec;
  212.     FoundFileArrayHdl = ^FoundFileArrayPtr;
  213.  
  214.     SearchProcedurePBRec = RECORD
  215.         fCallBackProcPtr:        InstallerCallBackUPP;
  216.         fTargetVRefNum:            INTEGER;
  217.         fTargetFolderDirID:        LONGINT;
  218.         fSystemVRefNum:            INTEGER;
  219.         fSystemBlessedDirID:    LONGINT;
  220.         fRefCon:                LONGINT;
  221.         fFileSpecType:            OSType;
  222.         fFileSpecCreator:        OSType;
  223.         fFileSpecCrDate:        LONGINT;
  224.         fFileSpecPath:            Str255;
  225.         fFoundFilesArray:        FoundFileArrayHdl;
  226.     END;
  227.  
  228.     SearchProcedurePBPtr = ^SearchProcedurePBRec;
  229.  
  230. {///////////////////////////////////////////////////////////////////////////////////////////////////}
  231. {}
  232. {                                        Setup Function}
  233. {}
  234. {}
  235. {    Code Resource Calling Interface:}
  236. {}
  237. {        long YourSetupFunction( EnvironmentSetupPBPtr );}
  238. {}
  239. {///////////////////////////////////////////////////////////////////////////////////////////////////}
  240. {$SETC kContinueInstallerSetup := 0}
  241. {$SETC kQuitInstallerNow := -1}
  242.     EnvironmentSetupPB = RECORD
  243.         fCallBackProcPtr:        InstallerCallBackUPP;
  244.         fTargetFSSpec:            FSSpec;
  245.         fSystemVRefNum:            INTEGER;
  246.     END;
  247.  
  248.     EnvironmentSetupPBPtr = ^EnvironmentSetupPB;
  249.  
  250. {///////////////////////////////////////////////////////////////////////////////////////////////////}
  251. {}
  252. {                                        Atom Extender Function}
  253. {}
  254. {}
  255. {    Code Resource Calling Interface:}
  256. {}
  257. {        long YourAtomExtenderFunction( ExtenderPBPtr );}
  258. {}
  259. {///////////////////////////////////////////////////////////////////////////////////////////////////}
  260.  
  261. CONST
  262.     kFileAtomDataFork            = 0;
  263.     kFileAtomRsrcFork            = 1;
  264.     kFileAtomRsrcForkFromDataFork = 2;
  265.     kRsrcAtom                    = 3;
  266.     kFontAtom                    = 4;
  267.     kActionAtom                    = 5;
  268.  
  269.     
  270. TYPE
  271.     DataType = SInt8;
  272.  
  273.  
  274. CONST
  275.     kFatalError                    = -1;
  276.     kContinueAsNormal            = 0;
  277.     kCancelInstallation            = 1;
  278.     kCopiedData                    = 2;
  279.  
  280.     
  281. TYPE
  282.     ExtenderResultCode = SInt16;
  283.  
  284.  
  285. CONST
  286.     kInitialize                    = 0;
  287.     kBeforePart                    = 1;
  288.     kAfterPart                    = 2;
  289.     kSuccess                    = 3;
  290.     kCancel                        = 4;
  291.  
  292.     
  293. TYPE
  294.     ExtenderMessageID = SInt8;
  295.  
  296.     EnvironsHeaderRec = RECORD
  297.         fMessageID:                ExtenderMessageID;
  298.         pad1:                    SInt8;
  299.         fStaticDataHdl:            Handle;
  300.         fCallBackProcPtr:        InstallerCallBackUPP;
  301.         fTargetVRefNum:            INTEGER;
  302.         fTargetFolderDirID:        LONGINT;
  303.         fSystemVRefNum:            INTEGER;
  304.         fSystemBlessedDirID:    LONGINT;
  305.         fRefCon:                LONGINT;
  306.         fDataType:                DataType;
  307.         pad2:                    SInt8;
  308.     END;
  309.  
  310.     CopyHeaderRec = RECORD
  311.         fSourceFile:            FSSpec;
  312.         fTargetFile:            FSSpec;
  313.         fTotalTargetSize:        LONGINT;
  314.         fTargetPosStart:        LONGINT;
  315.         fTargetPartSize:        LONGINT;
  316.         fSourcePartSize:        LONGINT;
  317.         fInstallerTempDirID:    LONGINT;
  318.     END;
  319.  
  320.     BasicCopyRec = RECORD
  321.         fEnvironmentHeader:        EnvironsHeaderRec;
  322.         fCopyPBHeader:            CopyHeaderRec;
  323.     END;
  324.  
  325.     RsrcCopyRec = RECORD
  326.         fEnvironmentHeader:        EnvironsHeaderRec;
  327.         fCopyPBHeader:            CopyHeaderRec;
  328.         fSourceRsrcType:        ResType;
  329.         fSourceRsrcID:            INTEGER;
  330.         fTargetRsrcType:        ResType;
  331.         fTargetRsrcID:            INTEGER;
  332.         fTargetRsrcName:        Str255;
  333.         fTargetRsrcAttrs:        INTEGER;
  334.     END;
  335.  
  336.     FontCopyRec = RECORD
  337.         fEnvironmentHeader:        EnvironsHeaderRec;
  338.         fCopyPBHeader:            CopyHeaderRec;
  339.         fSourceFontRsrcType:    ResType;
  340.         fSourceFontRsrcID:        INTEGER;
  341.         fTargetFontRsrcType:    ResType;                                { FONT, NFNT, or sfnt}
  342.         fTargetFontRsrcID:        INTEGER;
  343.         fTargetFontRsrcName:    Str255;
  344.         fTargetFontRsrcAttrs:    INTEGER;
  345.         fFamilyName:            Str255;
  346.         fFamilyID:                INTEGER;
  347.         fFontSize:                INTEGER;
  348.         fFontStyle:                INTEGER;
  349.     END;
  350.  
  351.     ExtenderPBRec = RECORD
  352.         CASE INTEGER OF
  353.         0: (
  354.             fBasicPBRec:                BasicCopyRec;
  355.            );
  356.         1: (
  357.             fFileCopyPBRec:                BasicCopyRec;
  358.            );
  359.         2: (
  360.             fRsrcCopyPBRec:                RsrcCopyRec;
  361.            );
  362.         3: (
  363.             fFontCopyPBRec:                FontCopyRec;
  364.            );
  365.     END;
  366.  
  367.     ExtenderPBPtr = ^ExtenderPBRec;
  368.  
  369. {///////////////////////////////////////////////////////////////////////////////////////////////////}
  370. {}
  371. {                                        Callback Glue Routines}
  372. {}
  373. {///////////////////////////////////////////////////////////////////////////////////////////////////}
  374. { Memory Related}
  375.  
  376. FUNCTION INewHandle(pCallBackProcPtr: InstallerCallBackUPP; newHandleSize: LONGINT): Handle; C;
  377. PROCEDURE IDisposHandle(pCallBackProcPtr: InstallerCallBackUPP; storageHandle: Handle); C;
  378. PROCEDURE IHLock(pCallBackProcPtr: InstallerCallBackUPP; storageHandle: Handle); C;
  379. PROCEDURE IHUnLock(pCallBackProcPtr: InstallerCallBackUPP; storageHandle: Handle); C;
  380. { Atom Extender Related}
  381. FUNCTION ReadSourceData(pCallBackProcPtr: InstallerCallBackUPP; VAR count: LONGINT; storagePtr: Ptr): OSErr; C;
  382. FUNCTION WriteTargetData(pCallBackProcPtr: InstallerCallBackUPP; count: LONGINT; storagePtr: Ptr): OSErr; C;
  383. FUNCTION ReadTargetData(pCallBackProcPtr: InstallerCallBackUPP; VAR count: LONGINT; storagePtr: Ptr): OSErr; C;
  384. FUNCTION SetTargetDataPos(pCallBackProcPtr: InstallerCallBackUPP; positionMode: INTEGER; positionOffset: LONGINT): OSErr; C;
  385. FUNCTION GetTargetDataPos(pCallBackProcPtr: InstallerCallBackUPP; VAR positionOffset: LONGINT): OSErr; C;
  386. FUNCTION GetTargetDataEOF(pCallBackProcPtr: InstallerCallBackUPP; VAR theLength: LONGINT): OSErr; C;
  387. FUNCTION SetSourceDataPos(pCallBackProcPtr: InstallerCallBackUPP; positionMode: INTEGER; positionOffset: LONGINT): OSErr; C;
  388. FUNCTION GetSourceDataPos(pCallBackProcPtr: InstallerCallBackUPP; VAR positionOffset: LONGINT): OSErr; C;
  389. FUNCTION GetSourceDataEOF(pCallBackProcPtr: InstallerCallBackUPP; VAR theLength: LONGINT): OSErr; C;
  390. { Action Atom Related}
  391. FUNCTION MakeFSSpecFromFileSpecID(pCallBackProcPtr: InstallerCallBackUPP; pFileSpecID: INTEGER; VAR pFSSpecPtr: FSSpec; VAR pExtraPathInfo: StringHandle): OSErr; C;
  392. PROCEDURE SuspendWaitCursor(pCallBackProcPtr: InstallerCallBackUPP); C;
  393. PROCEDURE ResumeWaitCursor(pCallBackProcPtr: InstallerCallBackUPP); C;
  394. PROCEDURE IncrementStatusBar(pCallBackProcPtr: InstallerCallBackUPP; pIncrementAmount: INTEGER); C;
  395. FUNCTION IsUserInteractionAllowed(pCallBackProcPtr: InstallerCallBackUPP): BOOLEAN; C;
  396. {///////////////////////////////////////////////////////////////////////////////////////////////////}
  397. {}
  398. {                                        Obsolete Interfaces}
  399. {}
  400. {///////////////////////////////////////////////////////////////////////////////////////////////////}
  401. { Old Action Atom Parameter Block}
  402.  
  403. TYPE
  404.     AAPBRec = RECORD
  405.         targetVRefNum:            INTEGER;
  406.         blessedDirID:            LONGINT;
  407.         aaRefCon:                LONGINT;
  408.         doingInstall:            BOOLEAN;
  409.         whichStage:                InstallationStage;
  410.         didLiveUpdate:            BOOLEAN;
  411.         padByte:                SInt8;
  412.         installerTempDirID:        LONGINT;
  413.     END;
  414.  
  415.     AAPBRecPtr = ^AAPBRec;
  416.  
  417. { Action Handler Parameter Block}
  418.     ActionHandlerPB = RECORD
  419.         fStaticDataHdl:            Handle;
  420.         fCallBackProcPtr:        InstallerCallBackUPP;
  421.         fTargetVRefNum:            INTEGER;
  422.         fTargetFolderDirID:        LONGINT;
  423.         fSystemVRefNum:            INTEGER;
  424.         fSystemBlessedDirID:    LONGINT;
  425.         fActionClassID:            INTEGER;
  426.         fActionIdentifier:        INTEGER;
  427.         fParam0:                Ptr;
  428.         fParam1:                Ptr;
  429.         fParam2:                Ptr;
  430.         fParam3:                Ptr;
  431.         fResultPtr:                Ptr;
  432.     END;
  433.  
  434.     ActionHandlerPBPtr = ^ActionHandlerPB;
  435.  
  436.  
  437. {$ALIGN RESET}
  438. {$POP}
  439.  
  440. {$SETC UsingIncludes := InstallerScriptIncludes}
  441.  
  442. {$ENDC} {__INSTALLERSCRIPT__}
  443.  
  444. {$IFC NOT UsingIncludes}
  445.  END.
  446. {$ENDC}
  447.